package Modelo.ObjetosDAO.Implementaciones;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import Modelo.Entidades.GrupoSanguineo;
import Modelo.Entidades.TipoDocumento;
import Modelo.GestionDeBD.GestorBD;
import Modelo.ObjetosDAO.Interfases.ISistemaDAO;

public class SistemaDAO implements ISistemaDAO {

	private GestorBD gbd = GestorBD.getGestorBD();

	/*
	 * public BaseDTO buscarElemento(Object idElemento) { PreparedStatement
	 * sentenciaBaseDatos = null; InmuebleDTO inmueble = null;
	 * GestorBD.getGestorBD();
	 * 
	 * try { Connection miconexion=GestorBD.comprobarConexion(); //Metodo que
	 * trae las provincias posibles para los inmuebles y las devuelve en una
	 * lista de DTO String selectSQL =
	 * "SELECT * FROM Inmueble i, Orientacion o, EstadoInmueble e, TipoInmueble ti WHERE i.Orientacion=O.Orientacion and ti.iTipoInmueble=i.iTipoInmueble and e.Estado=i.Estado"
	 * ; sentenciaBaseDatos = miconexion.prepareStatement(selectSQL); ResultSet
	 * rs = sentenciaBaseDatos.executeQuery(); while (rs.next()) {
	 * OrientacionDTO orientacion=new
	 * OrientacionDTO(rs.getString("o.orientacion")); EstadoInmuebleDTO
	 * estado=new EstadoInmuebleDTO(rs.getString("e.Estado")); TipoInmuebleDTO
	 * tipoInmueble=new TipoInmuebleDTO(rs.getString("ti.iTipoInmueble"),
	 * rs.getString("ti.Descripcion"));
	 * 
	 * PropietarioDTO propietario= (PropietarioDTO) (new
	 * PropietarioDAO()).buscarElemento(rs.getInt("i.idPropietario"));
	 * 
	 * DireccionDTO direccion=(DireccionDTO) (new
	 * DireccionDAO()).buscarElemento(rs.getInt("i.idDireccion"));
	 * 
	 * inmueble=new InmuebleDTO(rs.getInt("idInmueble"),
	 * rs.getString("i.FechaAlta"), rs.getInt("i.PrecioVenta"),
	 * rs.getString("i.Foto"), rs.getInt("Superficie"), rs.getInt("i.Frente"),
	 * rs.getInt("i.Fondo"),
	 * rs.getInt("i.Dormitorio"),rs.getInt("i.Sanitario"),rs
	 * .getInt("i.Antiguedad"),
	 * rs.getBoolean("PropiedadHorizontal"),rs.getBoolean
	 * ("Garage"),rs.getBoolean
	 * ("i.Patio"),rs.getBoolean("i.Piscina"),rs.getBoolean
	 * ("i.GasNatural"),rs.getBoolean
	 * ("i.Cloacas"),rs.getBoolean("i.AguaCorriente"
	 * ),rs.getBoolean("i.Telefono")
	 * ,rs.getBoolean("i.Lavadero"),rs.getBoolean("i.Pavimento"),
	 * orientacion,tipoInmueble
	 * ,propietario,estado,direccion,rs.getBoolean("AguaCaliente"
	 * ),rs.getString("Observaciones"));
	 * 
	 * 
	 * // String consulta = //
	 * "select nombre from Usuarios where nombre =? and clave =?"; String
	 * consulta = "SELECT * FROM tipo_documento"; sentencia =
	 * conn.prepareStatement(consulta); // sentencia.setString(1, nombre); //
	 * sentencia.setString(2, clave);
	 * 
	 * rs = sentencia.executeQuery();
	 */

	@Override
	public Vector<TipoDocumento> getDocumentos() {

		Connection conn = gbd.getConnection();
		Vector<TipoDocumento> listaDocumentos = new Vector<TipoDocumento>();
		PreparedStatement sentencia = null;
		ResultSet rs = null;

		try {
			String consulta = "SELECT * FROM tipo_documento";
			sentencia = conn.prepareStatement(consulta);
			rs = sentencia.executeQuery();
			while (rs.next()) {
				TipoDocumento doc = new TipoDocumento(rs.getInt("id"),
						rs.getString("descripcion"));
				listaDocumentos.add(doc);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return listaDocumentos;

	}

	public Vector<GrupoSanguineo> getGruposSanguineos() {

		Connection conn=gbd.getConnection();
		Vector<GrupoSanguineo> listaGrupos = new Vector<GrupoSanguineo>();
		
		PreparedStatement sentencia = null;
		ResultSet rs = null;

		try {
			String consulta = "SELECT * FROM grupo_sanguineo";
			sentencia = conn.prepareStatement(consulta);
			rs = sentencia.executeQuery();
		
			while (rs.next()) {
				GrupoSanguineo gs = new GrupoSanguineo(
						rs.getInt("id"), rs.getString("factor"),
						rs.getString("nombre_grupo"));
				listaGrupos.add(gs);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return listaGrupos;

	}

}
